package com.cms.recursoshumanos.activity.user.poliza;

import com.example.frontendrecursoshumanos.R;
import com.cms.recursoshumanos.activity.main.MainRecursosHumanosActivity;
import com.cms.recursoshumanos.activity.user.poliza.beneficiarios.ListaBeneficiariosActivity;
import com.cms.recursoshumanos.activity.user.poliza.carta_aval.InfoCartaAvalActivity;
import com.cms.recursoshumanos.activity.user.poliza.carta_aval.SetCartaAvalActivity;
import com.cms.recursoshumanos.activity.user.poliza.hospital.ListaHospitalActivity;
import com.cms.recursoshumanos.cache.UserInfoCache;
import com.cms.recursoshumanos.constant.Constant;
import com.cms.recursoshumanos.handler.DetailPolizaActivityHandler;
import com.cms.recursoshumanos.handler.ListaFamiliarActivityHandler;
import com.cms.recursoshumanos.handler.ListaHospitalActivityHandler;
import com.cms.recursoshumanos.object.Poliza;
import com.cms.recursoshumanos.object.Usuario;
import com.cms.recursoshumanos.utilities.Tool;

import android.os.AsyncTask;
import android.os.Bundle;
import android.app.ProgressDialog;
import android.content.Intent;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;

public class DetailPolizaActivity extends MainRecursosHumanosActivity 
{
	private static Poliza laPoliza;
	private ProgressDialog dialog;
	protected ListaHospitalAsync asyncListaHospitalTask;
	protected ListaBeneficiarioAsync asyncListaBeneficiarioTask;
	protected CartaAvalInformationAsync asyncCartaAvalInformationTask;
	protected DetailPolizaAsync asynDetailPolizaTask;
	private Usuario elUsuario;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) 
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_detail_poliza);
		elUsuario = UserInfoCache.getInstance().getUsuario();
		laPoliza = UserInfoCache.getInstance().getPoliza();
		setComponents();
	}
	@Override
	protected void onResume() 
	{
		super.onResume();
		if (elUsuario == null)
		{
			elUsuario = UserInfoCache.getInstance().getUsuario();
		}
		if (laPoliza == null)
		{
			laPoliza = UserInfoCache.getInstance().getPoliza();
		}
	}
	public void onRefreshClick(View v)
	{
		refreshPolizaInfo();
	}
	public void refreshPolizaInfo()
	{
		asynDetailPolizaTask = new DetailPolizaAsync(elUsuario);
		asynDetailPolizaTask.execute();
	}
	
	private void setComponents()
	{
		LinearLayout layout_info_general = (LinearLayout) findViewById(R.id.llInformacionGeneral);
		RelativeLayout layout_poliza_portait = (RelativeLayout) findViewById(R.id.rlPolizaPortrait);
		
		TextView numero_poliza_portait = (TextView) layout_poliza_portait.findViewById(R.id.tvPortaitNumeroPoliza);
		
		TextView fecha_vigencia_desde_poliza_second_row = (TextView) layout_info_general.findViewById(R.id.tvValueFechaVigenciaDesde);
		TextView fecha_vigencia_hasta_poliza_second_row = (TextView) layout_info_general.findViewById(R.id.tvValueFechaVigenciaHasta);
		TextView cant_aseg_poliza_second_row = (TextView) layout_info_general.findViewById(R.id.tvValueCantAsegSeguro);
		TextView prima_poliza_second_row = (TextView) layout_info_general.findViewById(R.id.tvValuePrimaSeguro);
		
		TextView nombre_seguro_second_row = (TextView) layout_info_general.findViewById(R.id.tvValueNombreSeguro);
		TextView rif_seguro_second_row = (TextView) layout_info_general.findViewById(R.id.tvValueRifSeguro);
		TextView telefono1_seguro_second_row = (TextView) layout_info_general.findViewById(R.id.tvValueTelefono1Seguro);
		TextView telefono2_seguro_second_row = (TextView) layout_info_general.findViewById(R.id.tvValueTelefono2Seguro);
		
		TextView nombre_corredor_second_row = (TextView) layout_info_general.findViewById(R.id.tvValueNombreCorredor);
		TextView email_corredor_second_row = (TextView) layout_info_general.findViewById(R.id.tvValueEmailCorredor);
		TextView telefono1_corredor_second_row = (TextView) layout_info_general.findViewById(R.id.tvValueTelefono1Corredor);
		TextView telefono2_corredor_second_row = (TextView) layout_info_general.findViewById(R.id.tvValueTelefono2Corredor);
		
		
		//*--------------Seteo de Portait------------------------------------
		numero_poliza_portait.setText("Poliza Nro. "+laPoliza.getNumeroPoliza());
		
		//*--------------Seteo de Detalle------------------------------------
		
		fecha_vigencia_desde_poliza_second_row.setText(Tool.getInstance().parseDateToString(laPoliza.getFechaIncSeguro(), 6));
		fecha_vigencia_hasta_poliza_second_row.setText(Tool.getInstance().parseDateToString(laPoliza.getFechaFinSeguro(), 6));
		cant_aseg_poliza_second_row.setText(""+laPoliza.getCantidadSeguro());
		prima_poliza_second_row.setText(""+laPoliza.getPrimaSeguro());
		
		nombre_seguro_second_row.setText(laPoliza.getSeguro().getNombre_Seguro());
		rif_seguro_second_row.setText(laPoliza.getSeguro().getRif_Seguro());
		telefono1_seguro_second_row.setText(laPoliza.getSeguro().getTelefono_Seguro_1());
		
		LinearLayout llNroTel2Seg = (LinearLayout) findViewById(R.id.trTelefono2Seguro);
		
		if (laPoliza.getSeguro().getTelefono_Seguro_2() != null)
		{
			llNroTel2Seg.setVisibility(View.VISIBLE);
			telefono2_seguro_second_row.setText(laPoliza.getSeguro().getTelefono_Seguro_2());
		}
		else
		{
			llNroTel2Seg.setVisibility(View.GONE);
		}
		
		nombre_corredor_second_row.setText(laPoliza.getSeguro().getCorredor().getApellido_Persona_1()+", "+
											laPoliza.getSeguro().getCorredor().getNombre_Persona_1());
		email_corredor_second_row.setText(laPoliza.getSeguro().getCorredor().getEmailPersona());
		telefono1_corredor_second_row.setText(laPoliza.getSeguro().getCorredor().getTelefono_Persona_1());
		
		LinearLayout llNroTel2Corr = (LinearLayout) findViewById(R.id.trTelefono2Corredor);
		if (laPoliza.getSeguro().getCorredor().getTelefono_Persona_2() != null)
		{
			llNroTel2Corr.setVisibility(View.VISIBLE);
			telefono2_corredor_second_row.setText(laPoliza.getSeguro().getCorredor().getTelefono_Persona_2());	
		}
		else
		{
			llNroTel2Corr.setVisibility(View.GONE);
		}
		
		
		
	}
	public void goListaHospital()
	{
		Intent intent = new Intent(DetailPolizaActivity.this, ListaHospitalActivity.class);
		startActivity(intent);
	}
	public void goCartaAval()
	{
		Intent intent = new Intent(DetailPolizaActivity.this, SetCartaAvalActivity.class);
		startActivity(intent);
	}
	public void goListaBeneficiarios()
	{
		Intent intent = new Intent(DetailPolizaActivity.this, ListaBeneficiariosActivity.class);
		startActivity(intent);
	}
	public void showListaHospital(View v)
    {
		getListaHospital();
	}
	public void showListaBeneficiarios(View v)
    {
		getListaBeneficiarios();
	}
	public void getCartaAval(View v)
    {
		proccCartaAval();
	}
	public void getInfoCartaAval(View v)
    {
		goInfoCartaAval();
	}
	public void goInfoCartaAval()
	{
		Intent intent = new Intent(DetailPolizaActivity.this, InfoCartaAvalActivity.class);
		startActivity(intent);
	}
	public void getListaHospitalFamiliar()
	{
		if (UserInfoCache.getInstance().getPoliza().getSeguro().getListadoHospital().cantElementListaHospital() > 0
				&& UserInfoCache.getInstance().getListaFamiliar().getListaFamiliarAsegurado().cantElementListaFamiliar() > 0)
		{
			goCartaAval();
		}
		else
		{
			asyncCartaAvalInformationTask = new CartaAvalInformationAsync(elUsuario);
			asyncCartaAvalInformationTask.execute();
		}
		
	}
	public void getListaHospital()
	{
		asyncListaHospitalTask = new ListaHospitalAsync(elUsuario);
		asyncListaHospitalTask.execute();

	}
	protected void getListaBeneficiarios()
	{
		asyncListaBeneficiarioTask = new ListaBeneficiarioAsync(elUsuario);
		asyncListaBeneficiarioTask.execute();
	}
	protected void proccCartaAval()
	{
		getListaHospitalFamiliar();
	}
	private class DetailPolizaAsync extends AsyncTask<String, Void, String>
	{
		
		//final String user = ((EditText) findViewById(R.id.etUsername)).getText().toString();
		private Usuario elUsuario;

		public  DetailPolizaAsync(Usuario elUsuario)
	    {
			this.elUsuario = elUsuario;
	    }
		@SuppressWarnings("deprecation")
		@Override
		protected void onPreExecute()
		{
			showDialog(0);
			dialog = ProgressDialog.show(DetailPolizaActivity.this, "Espere","Cargando...",true );
		}
	
		@Override
		protected String doInBackground(String... arg0) 
		{
			DetailPolizaActivityHandler handler = new DetailPolizaActivityHandler();
			String result = handler.refreshDetailPoliza(this.elUsuario.getNombre_Usuario(),
														this.elUsuario.getPassword());
			return result;
		}
		
		@Override
		public void onPostExecute(String  result)
		{
			
			String str_result = result;
			
			if (str_result.equals(Constant.CODE_OK))
			{ 
			}
			else 
			{
				Tool.getInstance().showMessage( str_result);
			}
			dialog.cancel();
			this.cancel(true);
		}
		
	}
	private class ListaHospitalAsync extends AsyncTask<String, Void, String>
	{
		private Usuario elUsuario;

		public  ListaHospitalAsync(Usuario elUsuario)
	    {
			this.elUsuario = elUsuario;
	    }
		
		@SuppressWarnings("deprecation")
		@Override
		protected void onPreExecute()
		{
			showDialog(0);
			dialog = ProgressDialog.show(DetailPolizaActivity.this, "Espere","Cargando...",true );
		}
	
		@Override
		protected String doInBackground(String... arg0) 
		{
		
			ListaHospitalActivityHandler handler = new ListaHospitalActivityHandler();
			String result = handler.getListaHospital(this.elUsuario.getNombre_Usuario(),
																this.elUsuario.getPassword(),
																laPoliza.getSeguro().getIdSeguro());
			return result;
		}
		
		@Override
		public void onPostExecute(String  result)
		{
			
			
			String str_result = result;
			
			if (str_result.equals(Constant.CODE_OK))
			{ 

				Tool.getInstance().saveUserInfoShared(8,UserInfoCache.getInstance().getPoliza().getSeguro().getListadoHospital());
				goListaHospital();
			}
			else 
			{
				Tool.getInstance().showMessage( str_result);
			}
			dialog.cancel();
			this.cancel(true);
			
			
		}
		
	}
	
	private class ListaBeneficiarioAsync extends AsyncTask<String, Void, String>
	{
		
		private Usuario elUsuario;

		public  ListaBeneficiarioAsync(Usuario elUsuario)
	    {
			this.elUsuario = elUsuario;
	    }
		@SuppressWarnings("deprecation")
		@Override
		protected void onPreExecute()
		{
			showDialog(0);
			dialog = ProgressDialog.show(DetailPolizaActivity.this, "Espere","Cargando...",true );
		}
	
		@Override
		protected String doInBackground(String... arg0) 
		{
			ListaFamiliarActivityHandler handler = new ListaFamiliarActivityHandler();
			String result = handler.getListaFamiliar(this.elUsuario.getNombre_Usuario(),
														this.elUsuario.getPassword());
			return result;
		}
		
		@Override
		public void onPostExecute(String  result)
		{
			
			String str_result = result;
			
			if (str_result.equals(Constant.CODE_OK))
			{ 
				Tool.getInstance().saveUserInfoShared(4,UserInfoCache.getInstance().getListaFamiliar());
				goListaBeneficiarios();
			}
			else 
			{
				Tool.getInstance().showMessage( str_result);
			}
			dialog.cancel();
			this.cancel(true);
			
			
		}
		
	}
	
	private class CartaAvalInformationAsync extends AsyncTask<Integer, Void, String>
	{
		private Usuario elUsuario;

		public  CartaAvalInformationAsync(Usuario elUsuario)
	    {
			this.elUsuario = elUsuario;
	    }
		
		@SuppressWarnings("deprecation")
		@Override
		protected void onPreExecute()
		{
			showDialog(0);
			dialog = ProgressDialog.show(DetailPolizaActivity.this, "Espere","Cargando...",true );
		}
	
		@Override
		protected String doInBackground(Integer... arg0) 
		{
	
			DetailPolizaActivityHandler handler = new DetailPolizaActivityHandler();
			String result = handler.getListaHospitalBeneficiarios(this.elUsuario.getNombre_Usuario(),
																	this.elUsuario.getPassword(),
																	laPoliza);
			return result;
			//return ConexionHandler.makeLogin(LoginActivity.this,arg0[0], arg0[1]);
		}
		
		@Override
		public void onPostExecute(String  result)
		{
			
			String str_result = result;
			
			if (str_result.equals(Constant.CODE_OK))
			{ 
				goCartaAval();
			}
			else 
			{
				Tool.getInstance().showMessage( str_result);
			}
			dialog.cancel();
			this.cancel(true);
			
			
		}
		
	}
	

}
